#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author Jmz


# min max 与匿名函数的运用
l = [1,2,3,4,5,6,7,8,9]
dic = {'x':11,'y':32,'z':3}

print(max(l))
print(min(l))

print(max(dic))  # z  这个取的是key的最大值
print(max(dic,key=lambda k:dic[k]))  # y   # 这个取的是value最大值的那个key

print(min(dic)) # x  这个取的是key的最小值
print(min(dic,key=lambda k:dic[k]))  # z   # 这个取的是value最小值的那个key

print(max([-11,1,21,-31],key=abs))   # -31    # 比较谁的绝对值最大   abs 内置函数取绝对值




# sorted 与 匿名函数的运用
salaries={
    'egon':3000,
    'alex':100000000,
    'wupeiqi':10000,
    'yuanhao':2000
}

# 将姓名已工资排序
print(sorted(salaries,key=lambda k:salaries[k]))   # 默认升序
# ['yuanhao', 'egon', 'wupeiqi', 'alex']
print(sorted(salaries,key=lambda k:salaries[k],reverse=True))   # 降序了
# ['alex', 'wupeiqi', 'egon', 'yuanhao']

salaries_t = zip(salaries.keys(),salaries.values()) # 迭代器
print(salaries_t)  # <zip object at 0x0000000002502E88>
#list(salaries_t)  == >  [('egon', 3000), ('alex', 100000000), ('wupeiqi', 10000), ('yuanhao', 2000)]

# zip 用于将可迭代的对象作为参数，将对象中对应的元素打包成一个个元组，然后返回由这些元组组成的列表或者字典
print(sorted(salaries_t,key=lambda v:v[1]))    # 表示已每个元组的第2个数排序
# [('yuanhao', 2000), ('egon', 3000), ('wupeiqi', 10000), ('alex', 100000000)]




# map 与匿名函数运用（重要）
names = [' jMZ',' jaCk  ','   jIm ']
# 将名字 转成 首字母 大写，并去除两边空格
names = map(lambda x:x.strip().title(),names)
print(list(names))
# ['Jmz', 'Jack', 'Jim']


# filter与匿名函数运用    函数用于过滤序列，过滤掉不符合条件的元素，返回由符合条件元素组成的新列表。
names=['alex_sb','wupeiqi_sb','egon','yuanhao_sb','liuqingzheng_sb']
res=filter(lambda x:x.endswith('sb'),names)
print(list(res))





print((i for i in range(10)))  # <generator object <genexpr> at 0x00000000021E00A0>  生成器







